$(function() {
	// 角色信息grid
	var roleId = '';
	// 角色默认标志位
	var roleFlag = '1';
	var instNode;
	jQuery("#roleInfoList").jqGrid( {
		url : 'findAllSysRoles',
		datatype : "json",
		colNames : [ '角色名', '备注', '标志位' ],
		colModel : [ {
			name : 'name',
			index : 'name',
			width : 120,
			sortable : false
		}, {
			name : 'remark',
			index : 'remark',
			width : 240,
			sortable : false
		}, {
			name : 'flag',
			index : 'flag',
			width : 20,
			editable : true,
			edittype : "text",
			sortable : false,
			hidden : true
		} ],
		multiselect : false,
		onSelectRow : function(id) {
			instNode.uncheck_all();
			roleId = jQuery("#roleInfoList").jqGrid('getGridParam', 'selrow');
			roleFlag = jQuery("#roleInfoList").getRowData(roleId).flag;
			$.ajax( {
				type : "POST",
				url : "findSysMenusBySysRoleId",
				data : "sysRoleBean.id=" + roleId,
				success : function(data) {
					$.each(data.sysMenuBeans, function(i, item) {
						instNode.open_node(getNodeId(item.id), null, true);
						instNode.alone_checked(getNodeId(item.id));
					});
				}
			});
		},

		rowNum : 15,
		// 一个数组用来调整表格显示的记录数，此参数值会替代rowNum参数值传给服务器端。如果为空则不显示，设置格式：[10,20,30]
		rowList : [ 10, 15, 20, 30 ],
		pager : '#pager',
		sortname : 'id',
		sortorder : "desc",
		// 表格高度，可以是数字，像素值或者百分比
		height : constant.heightDefault * 2 + 40,
		// 如果设置则按此设置为主，如果没有设置则按colModel中定义的宽度计算
		autowidth : true,
		caption : "角色列表",
		jsonReader : {
			// 这个元素指明表格所需要的数据从哪里开始
			root : "sysRoleBeans",
			page : "pageBean.curPage", // 当前页
			total : "pageBean.totalPages", // 总页数
			records : "pageBean.totalRecords", // 总记录数
			rows : "pageBean.pageSize",// 每页显示的行数
			sort : "pageBean.sort",// 排序字段
			order : "pageBean.order",// 排序方式
			// 指明每行的数据是可以重复的，如果设为false，则会从返回的数据中按名字来搜索元素,这个名字就是colModel中的名字
			repeatitems : false
		},

		prmNames : {
			rows : "pageBean.pageSize",
			page : "pageBean.curPage",
			total : "pageBean.totalPages",
			records : "pageBean.totalRecords",
			sort : "pageBean.orderBy",
			order : "pageBean.order"
		},
		rownumbers : true,
		emptyrecords : '无记录可显示',
		shrinkToFit : false,
		// 是否要显示总记录数
		viewrecords : true
	});
	jQuery("#roleInfoList")
			.navGrid('#pager', {
				edit : false,
				add : false,
				del : false,
				refresh : false,
				search : false
			})
			.navButtonAdd(
					'#pager',
					{
						caption : "提交",
						buttonicon : "ui-icon-check",
						title : "提交",
						position : "last",
						onClickButton : function() {
							if (roleFlag == '0') {
								var unchecked = instNode.get_all_unchecked();
								var unchecked_str = "";
								for ( var i = 0; i < unchecked.length; i++) {
									if ($(unchecked[i]).attr("flag") + "\n" == 0
											|| $(unchecked[i]).attr("flag")
													+ "\n" == "0") {
										unchecked_str += "  "
												+ instNode
														.get_text(unchecked[i]);
									}
								}
								if (unchecked_str != "") {
									jAlert("禁止取消系统角色的默认菜单,请重新设置!\n" + "相关菜单为："
											+ unchecked_str);
									return;
								}

							}
							$.ajax( {
								type : "POST",
								url : "setSysMenu",
								data : "sysRoleBean.id=" + roleId
										+ "&sysRoleBean.sysMenuIDs="
										+ getCheckedNode(),
								success : function(data) {
									if (data) {
										jAlert('设置成功!');
									} else {
										jAlert('设置失败!');
									}
								},
								error : function(XMLHttpRequest, textStatus,
										errorThrown) {
									jAlert('设置失败!');
								}
							});
						}
					});
	$.ajaxSetup( {
		cache : false
	});// ajax调用不使用缓存
	$("#menuTreeInfo")
			.jstree( {// menu_tree 为 由Jquery选择器选中的DIV容器的ID
						"themes" : {
							"theme" : "classic",
							"dots" : true,
							"icons" : false
						},
						"json_data" : {
							"ajax" : {
								"url" : "findAllSysMenus",
								"data" : function(n) {
									return {
										id : n.attr ? n.attr("id") : 0
									};
								}
							}
						},
						"core" : {
							"strings" : {
								"loading" : "菜单加载中……"
							}
						},
						// 插件使用右键菜单支持自定义右键菜单
						"plugins" : [ "themes", "json_data", "ui", "crrm",
								"mycheckbox" ]
					});
	$("#menuTreeInfo").bind("loaded.jstree", function(e, data) {
		instNode = data.inst;
	});
	/**
	 * 获取选中节点及其直接和间接父节点的方法
	 */
	function getCheckedNode() {
		var ids = "";
		var checked = instNode.get_all_checked();
		for (i = 0; i < checked.length; i++) {
			ids += checked[i] + ",";
		}
		return ids.substring(0, ids.length - 1);
	}
	// 通过节点ID获取节点对象
	function getNodeId(nodeId) {
		return "#" + nodeId + "";
	}
});
